// package com.advertisementsystem.Config;
//
// import com.advertisementsystem.Interceptor.WebSocketAuthInterceptor;
// import com.advertisementsystem.handler.ChatWebSocketHandler;
// import lombok.extern.slf4j.Slf4j;
// import org.springframework.context.annotation.Bean;
// import org.springframework.context.annotation.Configuration;
// import org.springframework.web.socket.WebSocketHandler;
// import org.springframework.web.socket.config.annotation.EnableWebSocket;
// import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
// import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
//
// @Configuration
// @EnableWebSocket
// @Slf4j
// public class WebSocketConfig implements WebSocketConfigurer {
//     private final ChatWebSocketHandler chatWebSocketHandler;
//     @Override
//     public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
//         registry.addHandler(chatWebSocketHandler(), "/ws/chat")
//                 .addInterceptors(new WebSocketAuthInterceptor())  // 添加认证拦截器
//                 .setAllowedOrigins("*");
//     }
//
//     @Bean
//     public WebSocketHandler chatWebSocketHandler() {
//         return new ChatWebSocketHandler();
//     }
//
//     // 通过构造函数注入，避免使用@Autowired
//     public WebSocketConfig(ChatWebSocketHandler chatWebSocketHandler) {
//         this.chatWebSocketHandler = chatWebSocketHandler;
//         log.info("WebSocketConfig初始化，注入ChatWebSocketHandler成功");
//     }
// }
package com.advertisementsystem.Config;

import com.advertisementsystem.Interceptor.WebSocketAuthInterceptor;
import com.advertisementsystem.handler.ChatWebSocketHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;

@Configuration
@EnableWebSocket
@Slf4j
public class WebSocketConfig implements WebSocketConfigurer {

    private final ChatWebSocketHandler chatWebSocketHandler;

    // 通过构造函数注入，避免使用@Autowired
    public WebSocketConfig(ChatWebSocketHandler chatWebSocketHandler) {
        this.chatWebSocketHandler = chatWebSocketHandler;
        log.info("WebSocketConfig初始化，注入ChatWebSocketHandler成功");
    }

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(chatWebSocketHandler, "/ws/chat")
                .addInterceptors(new WebSocketAuthInterceptor())  // 添加认证拦截器
                .setAllowedOrigins("*");

        log.info("WebSocket处理器注册成功，路径: /ws/chat");
    }
}